using System;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using Anthem;
using App_Code;
using Common;
using MinCultura.Sipa.AgentesArtes;
using MinCultura.Sipa.EntidadesArtes; using MinCultura.Sipa.DataAccess.EntidadesArtes;
using UsrControls;
using CheckBoxList = Anthem.CheckBoxList;
using Label = Anthem.Label;

namespace web.Controls
{
	/// <summary>
	/// Summary description for AgentesBasicos.
	/// </summary>
	public class EntidadesFormacion : SinicUserControl
	{
		protected CheckBoxList chlAREAS_ARTISTICAS_FORMACION;
		protected CheckBoxList chlNIVEL_FORMACION;
		protected DropDownBase dplFORMACION;
		protected Label lblNivelFormacion;
		protected Anthem.RadioButtonList rblSiNoImparteFormacion;
		protected Anthem.Label lblAreasArtisticasFormacion;
		protected Anthem.Label lblFormacion;

		#region - Eventos

		private void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				Manager.Register(this);				
			}
		}

		private void dplFORMACION_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (dplFORMACION.SelectedValue.Length > 0)
				CargarNivelFormacion(Convert.ToDecimal(dplFORMACION.SelectedValue));
		}

		#endregion 

		#region - Metodos 		

		public EntidadFormacionData ObtenerDatos()
		{
			EntidadFormacionData objData = new EntidadFormacionData();

			DataRow fila = objData.NewRow();
			fila[EntidadFormacionData.ENT_ID_FIELD] = this.Identificador;
			fila[EntidadFormacionData.FRM_ID_FIELD] = dplFORMACION.SelectedValue;
			fila[EntidadFormacionData.ENT_SINO_IMPARTE_FORMACION_FIELD] = rblSiNoImparteFormacion.SelectedValue;
			objData.addEntidadFormacion(fila);

			return objData;
		}

		public AreasArtisticasFormacionEntidadData ObtenerDatosAreasArtisticas()
		{
			//Areas artisticas formacion entidad			
			AreasArtisticasFormacionEntidadData objDataAreasArtisiticasEntidad = new AreasArtisticasFormacionEntidadData();

			if (rblSiNoImparteFormacion.SelectedValue == Utilidad.SI)
			{
				DataRow filaAreasArtisticasEntidad;
				foreach (ListItem Li in chlAREAS_ARTISTICAS_FORMACION.Items)
				{
					if (Li.Selected)
					{
						filaAreasArtisticasEntidad = objDataAreasArtisiticasEntidad.NewRow();
						filaAreasArtisticasEntidad[AreasArtisticasFormacionEntidadData.ARE_ID_FIELD] = Li.Value;
						filaAreasArtisticasEntidad[AreasArtisticasFormacionEntidadData.ENT_ID_FIELD] = this.Identificador;
						objDataAreasArtisiticasEntidad.addAreasArtisticasFormacionEntidad(filaAreasArtisticasEntidad);
					}
				}
			}

			return objDataAreasArtisiticasEntidad;
		}

		public NivelEntidadesImparteData ObtenerDatosNivelFormacion()
		{
			//Nivel de Formacion chlNIVEL_FORMACION			
			NivelEntidadesImparteData objDataNivelFormacionEntidad = new NivelEntidadesImparteData();

			if (rblSiNoImparteFormacion.SelectedValue == Utilidad.SI)
			{
				DataRow filaNivelFormacionEntidad;
				foreach (ListItem Li in chlNIVEL_FORMACION.Items)
				{
					if (Li.Selected)
					{
						filaNivelFormacionEntidad = objDataNivelFormacionEntidad.NewRow();
						filaNivelFormacionEntidad["NFI_ID"] = Li.Value;
						filaNivelFormacionEntidad[NivelFormacionEntidadData.ENT_ID_FIELD] = this.Identificador;
						objDataNivelFormacionEntidad.addNivelEntidadesImparte(filaNivelFormacionEntidad);
					}
				}
			}

			return objDataNivelFormacionEntidad;
		}

		public void CreaEntorno(DataRow fila, NivelEntidadesImparteData objDataNivel, AreasArtisticasFormacionEntidadData objDataAreas)
		{
			CargarControles();

			this.Identificador = Convert.ToDecimal(fila[EntidadFormacionData.ENT_ID_FIELD]);

			chlAREAS_ARTISTICAS_FORMACION.ClearSelection();

			if (fila[EntidadFormacionData.ENT_SINO_IMPARTE_FORMACION_FIELD] != DBNull.Value && 
				fila[EntidadFormacionData.ENT_SINO_IMPARTE_FORMACION_FIELD].ToString() == Utilidad.SI)
			{
				rblSiNoImparteFormacion.SelectedValue = fila[EntidadFormacionData.ENT_SINO_IMPARTE_FORMACION_FIELD].ToString();

				rblSiNoImparteFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
				lblAreasArtisticasFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
				chlAREAS_ARTISTICAS_FORMACION.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
				lblFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
				dplFORMACION.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
				lblNivelFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
				chlNIVEL_FORMACION.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;

				if (objDataAreas != null)
				{
					foreach (DataRow dr in objDataAreas.Rows)
					{
						foreach (ListItem Li in chlAREAS_ARTISTICAS_FORMACION.Items)
						{
							if (Li.Value == dr[AreasArtisticasFormacionEntidadData.ARE_ID_FIELD].ToString())
								Li.Selected = true;
						}
					}
				}

				if (fila[EntidadFormacionData.FRM_ID_FIELD] != null)
				{
					dplFORMACION.SelectedValue = fila[EntidadFormacionData.FRM_ID_FIELD].ToString();
				}

				if (dplFORMACION.SelectedValue == "8")
				{
					chlNIVEL_FORMACION.ClearSelection();
					if (objDataNivel != null)
					{
						foreach (DataRow dr in objDataNivel.Rows)
						{
							foreach (ListItem Li in chlNIVEL_FORMACION.Items)
							{
								if (Li.Value == dr[NivelEntidadesImparteData.NFI_ID_FIELD].ToString())
									Li.Selected = true;
							}
						}
					}
				}
				else
				{
					lblNivelFormacion.Visible = false;
					chlNIVEL_FORMACION.Visible = false;
				}
			}			
		}

		public void CargarControles()
		{
			chlAREAS_ARTISTICAS_FORMACION.Items.Clear();
            AreaArtisticas objControl = new AreaArtisticas(ConfigurationManager.AppSettings["Conn"]);
			DataTable objDataArtistica = objControl.BuscarAreaArtisticasEntidad();
			if (objDataArtistica != null)
			{
				chlAREAS_ARTISTICAS_FORMACION.DataSource = objDataArtistica;
				chlAREAS_ARTISTICAS_FORMACION.DataTextField = "ART_NOMBRE";
				chlAREAS_ARTISTICAS_FORMACION.DataValueField = "ART_ID";
				chlAREAS_ARTISTICAS_FORMACION.DataBind();
			}

			dplFORMACION.Items.Clear();
            TipoFormacionArtisticaImparte objBR = new TipoFormacionArtisticaImparte(ConfigurationManager.AppSettings["Conn"]);
			TipoFormacionArtisticaImparteData objData = new TipoFormacionArtisticaImparteData();
			objData = objBR.BuscarTipoFormacionArtisticaImparte();
			if (objData != null)
			{
				dplFORMACION.DataSource = objData.Tables[0];
				dplFORMACION.DataTextField = TipoFormacionArtisticaImparteData.FRM_FROMACION_IMPARTE_FIELD;
				dplFORMACION.DataValueField = TipoFormacionArtisticaImparteData.FRM_ID_FIELD;
				dplFORMACION.DataBind();
			}

			if (dplFORMACION.SelectedValue.Length > 0)
			{
				CargarNivelFormacion(Convert.ToDecimal(dplFORMACION.SelectedValue));
			}		
		}

		private void CargarNivelFormacion(decimal parIdFormacion)
		{
            NivelFormacionImparte objBR = new NivelFormacionImparte(ConfigurationManager.AppSettings["Conn"]);
			NivelFormacionImparteData objData = new NivelFormacionImparteData();

			chlNIVEL_FORMACION.Items.Clear();

			objData = objBR.BuscarNivelFormacionImparte(parIdFormacion);
			if (objData != null)
			{
				lblNivelFormacion.Visible = true;
				chlNIVEL_FORMACION.Visible = true;
				chlNIVEL_FORMACION.DataSource = objData;
				chlNIVEL_FORMACION.DataTextField = NivelFormacionImparteData.NFI_DESCRIPCION_FIELD;
				chlNIVEL_FORMACION.DataValueField = NivelFormacionImparteData.NFI_ID_FIELD;
				chlNIVEL_FORMACION.DataBind();
			}
			else
			{
				lblNivelFormacion.Visible = false;
				chlNIVEL_FORMACION.Visible = false;
			}
		}

		private void rblSiNoImparteFormacion_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			rblSiNoImparteFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
			lblAreasArtisticasFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
			chlAREAS_ARTISTICAS_FORMACION.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
			lblFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
			dplFORMACION.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
			lblNivelFormacion.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
 			chlNIVEL_FORMACION.Enabled = rblSiNoImparteFormacion.SelectedValue == Utilidad.SI;
		}
		#endregion 

		#region - Propiedades

		public decimal Identificador
		{
			get
			{
				if (ViewState["Identificador"] != null)
					return ((decimal) ViewState["Identificador"]);
				else
					return (0);
			}
			set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
		}

		public EntidadFormacionData EntidadFormacionDataTable
		{
			get
			{
				EntidadFormacionData dtEntidadFormacionData = null;

				if (Cache[EntidadFormacionData.ART_ENTIDAD_FORMACION_TABLE+ Session.SessionID] != null)
				{
					dtEntidadFormacionData =
						(EntidadFormacionData) Cache[EntidadFormacionData.ART_ENTIDAD_FORMACION_TABLE + Session.SessionID];
				}

				return dtEntidadFormacionData;
			}
		}

		public AreasArtisticasFormacionEntidadData AreasArtisticasFormacionEntidadDataTable
		{
			get
			{
				AreasArtisticasFormacionEntidadData dtAreasArtisticasFormacionEntidadData = null;

				if (Cache[AreasArtisticasFormacionEntidadData.ART_AREAS_ARTISTICAS_FORMACION_ENTIDAD_TABLE+ Session.SessionID] != null)
				{
					dtAreasArtisticasFormacionEntidadData =
						(AreasArtisticasFormacionEntidadData) Cache[AreasArtisticasFormacionEntidadData.ART_AREAS_ARTISTICAS_FORMACION_ENTIDAD_TABLE + Session.SessionID];
				}

				return dtAreasArtisticasFormacionEntidadData;
			}
		}

		public NivelEntidadesImparteData NivelEntidadesImparteDataTable
		{
			get
			{
				NivelEntidadesImparteData dtNivelEntidadesImparteData = null;

				if (Cache[NivelEntidadesImparteData.ART_NIVEL_ENTIDADES_IMPARTE_TABLE+ Session.SessionID] != null)
				{
					dtNivelEntidadesImparteData =
						(NivelEntidadesImparteData) Cache[NivelEntidadesImparteData.ART_NIVEL_ENTIDADES_IMPARTE_TABLE + Session.SessionID];
				}

				return dtNivelEntidadesImparteData;
			}
		}

		public DataSet FormacionData
		{
			get 
			{
				DataSet dsFormacion = new DataSet();
				dsFormacion.Tables.Add(ObtenerDatos());
				dsFormacion.Tables.Add(ObtenerDatosAreasArtisticas());
				dsFormacion.Tables.Add(ObtenerDatosNivelFormacion());
				
				return dsFormacion;
			}
			set
			{
				if (value != null && value.Tables.Count > 0)
				{
					EntidadFormacionData entidadFormacionData = (EntidadFormacionData)value.Tables[EntidadFormacionData.ART_ENTIDAD_FORMACION_TABLE];
					AreasArtisticasFormacionEntidadData areasArtisticasFormacionEntidadData = (AreasArtisticasFormacionEntidadData)value.Tables[AreasArtisticasFormacionEntidadData.ART_AREAS_ARTISTICAS_FORMACION_ENTIDAD_TABLE];
					NivelEntidadesImparteData nivelEntidadesImparteData = (NivelEntidadesImparteData)value.Tables[NivelEntidadesImparteData.ART_NIVEL_ENTIDADES_IMPARTE_TABLE]; 
					
					CreaEntorno(entidadFormacionData.Rows[0],nivelEntidadesImparteData,areasArtisticasFormacionEntidadData);
				}
			}
		}

		#endregion 

		#region Web Form Designer generated code

		protected override void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}

		private void InitializeComponent()
		{
			this.rblSiNoImparteFormacion.SelectedIndexChanged += new System.EventHandler(this.rblSiNoImparteFormacion_SelectedIndexChanged);
			this.dplFORMACION.SelectedIndexChanged += new System.EventHandler(this.dplFORMACION_SelectedIndexChanged);
			this.Load += new System.EventHandler(this.Page_Load);

		}

		#endregion


	}
}